package com.foreknow.demo16;

import java.util.Arrays;

public class Test2 {
    /**
     * ======选择排序=======
     * 第一轮：找到最小值23，跟第1个位置29交换，得到有序集合{23}。
     * <p>
     * 第二轮：从无序集合中找到最小值27，跟第2个位置38交换，得到有序集合{23,27}。
     * <p>
     * 第三轮：从无序集合中找到最小值29，跟第3个位置65交换，得到有序集合{23,27,29}。
     * <p>
     * 第四轮：从无序集合中找到最小值29，跟第4个位置87交换，得到有序集合{23,27,29,29}。
     * <p>
     * 第五轮：从无序集合中找到最小值38，跟第5个位置78交换，得到有序集合{23,27,29,29,38}。
     * <p>
     * 第六轮：从无序集合中找到最小值65，不需要交换，得到有序集合{23,27,29,29,38,65}。
     * <p>
     * 第七轮：从无序集合中找到最小值78，不需要交换，得到有序集合{23,27,29,29,38,65,78}。
     * <p>
     * 剩下的最后的1个元素一定是最大元素。
     */
    public static void select(int[] arr) {
        int minindex, temp;
        //找到最小值i
        for (int i = 0; i < arr.length - 1; i++) {
            minindex = i;
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] < arr[minindex]) {
                    temp = arr[minindex];
                }
            }
            temp = arr[i];
            arr[i] = arr[minindex];
            arr[minindex] = temp;
        }
    }

    public static void main(String[] args) {
        int[] arr = { 29, 38, 65, 87, 78, 23, 27, 29 };
        select(arr);
        System.out.println(Arrays.toString(arr));
    }

}
